"""
0、在excel表格里把数据库断言的：
   - 同样用json格式表示： {"sql表达式":"预期结果"}
1、先读取数据出来-- 反序列化 转化字典 ： {"select count(*) from tz_order where order_number = '#orderNumbers#'":1,
"select status from tz_order where order_number = '#orderNumbers#'":1}
2、for循环得到key【sql】 和value【预期数据库查询结果】
3、替换一下sql里的占位符
4、调用数据库封装的方法 执行查询语句 得到数据库查询结果
5、把预期结果和查询结果 断言
6、最后加上日志和异常捕获 + 判空处理。

"""
import json
from tools.handle_replace import replace_mark
from tools.handle_mysql import HandleMysql
from data.my_db import my_db

assert_sql = """{"select count(*) from tz_order where order_number = '#orderNumbers#'":1, 
"select status from tz_order where order_number = '#orderNumbers#'":1}"""
# 第一步：反序列化 转化字典
asset_sql = json.loads(assert_sql)
# 第二步： for循环得到key【sql】 和value【预期数据库查询结果】
for k,v in asset_sql.items():
    # 第三步： 替换一下sql里的占位符
    k = replace_mark(k)
    # 第四步：调用数据库封装的方法 执行查询语句 得到数据库查询结果
    sql_result = HandleMysql(**my_db).query_data(k) # 数据库查询的结果 {'status': 2}
    # 第五步：把预期结果和查询结果 断言 实际结果 == 预期结果
    for i in sql_result.values(): # 因为数据库结果的key不固定的 不能通过key取值value .values获取得到实际结果
        assert i == v


